An arbiter controls the granting of a shared resource, such as a memory resource, among a number of requestors, such as central processing units (CPU's), in a data processing system in which all contend for the shared resource. Arbiters according to the prior art typically implement static prioritization policies. One class of arbiters employs a fixed priority. With such fixed priority arbiters, the requesting priority of a request made by one of the requestors is determined by the particular input of the arbiter on which the request is signaled. Different inputs of these arbiters correspond to different levels of priority. A disadvantage of such fixed priority arbiters is the resulting asymmetric utilization among the different requestors. Under conditions of heavy contention, it is possible for the lower priority requestors to be denied usage of the shared resource for extended periods.
Another class of prior art arbiters employ a prioritization policy called "round robin." With such a round robin priority arbiters, the priority of requests is rotated among the different requestors. This is advantageous where the requirements of all the requestors are substantially the same, since it provides a policy of fairness in which all the requestors are granted the same amount of utilization of the shared resource by all of the requestors with the same request latency over time. However, this fairness may be detrimental when different requestors have greater sensitivity to request latency and resource utilization than others.
Although it is possible to combine a conventional round-robin arbiter with a conventional fixed priority arbiter to provide an arbiter with a mixture of the two types of inputs, such a combinational arbiter is still limited to coupling a specific number of request inputs to specific arbitration policies.